hard link
同じファイルに対する2つ以上のpathを作成する
ディスク上の物理的なデータに対して2つ以上の参照が存在する
例えば、バックアップとスナップショットのために使う
歴史が、A,B,Cとあった時に、
AとBの内容が全く同じである場合、BはAのハードリンクとして作る
そうすることで、ディスクの容量を無駄に食わない
ここで、仮にAが削除されても、Bには影響しない
フォルダに対しては作れない
同一のファイルにポインタを指して、別名のファイルを作る
code:dir
C → A ← B
Aというファイル実体に向けて、CとBからポインタを貼ることで、
Aに、CやBという名前をつけたことになる
欠点としては、上のファイルの実体A視点で見ると、誰にポインタを貼られているのかわからない点
削除時の順序
実体にAという名前がついている
ハードリンクでB, Cという名前をつける
Aを削除する
BやCが存在するので実体は消えない
Aのパスを見てもアクセスはできない
Bを削除する
Cが存在するので実体は消えない
Cを削除する
実体は誰にも見られなくなったので本当に消える
ファイルを消した際に、本当に実体が消えるのかどうかが状況に依存する
消えることもアレば、消えないこともある
そもそも論
「ファイルを作成」したときに
実体とそのファイル名は別々に作られる、という理解を前提にしておこう
つまり、全てのファイル実体には一つ以上のファイルから参照されている
誰にも参照されなく成った実体は削除される
参考